package com.meituan.sdk.model.wmoperNg.order.zbDispatch;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 众包配送-发配送
* This file was automatically generated.
*/
@ApiMeta(
    path = "/wmoper/ng/order/zbDispatch",
    businessId = 16,
    apiVersion = "10081",
    apiName = "zb_dispatch",
    needAuth = true
)
public class ZbDispatchRequest implements MeituanRequest<String> {
    /**
    * <p><span style="color: rgba(0, 0, 0, 0.87)"><font style="font-size:14px;line-height:22px" data-size="14">订单号</font></span></p>
    */
    @NotBlank(message = "orderId不能为空")
    @SerializedName("orderId")
    private String orderId;
    /**
    * <p><span style="color: rgba(0, 0, 0, 0.87)"><font style="font-size:14px;line-height:22px" data-size="14">配送费</font></span></p>
    */
    @NotNull(message = "shippingFee不能为空")
    @SerializedName("shippingFee")
    private Double shippingFee;
    /**
    * <p>小费</p>
    */
    @NotNull(message = "tipAmount不能为空")
    @SerializedName("tipAmount")
    private Double tipAmount;
    /**
    * <p>配送优惠券id</p>
    */
    @SerializedName("couponViewId")
    private String couponViewId;
    /**
    * <p>惊喜立减字段</p>
    */
    @SerializedName("reduceDetail")
    private String reduceDetail;
    /**
    * <p data-diff-id="ct-diff-id-b35853bc-1974-4dfb-bb9c-83b13c238e0b">跑腿配送服务品牌<br>1003：美团跑腿<br>4033：美团直送<br>4034：1对1急送</p>
    */
    @SerializedName("logisticsCode")
    private String logisticsCode;
    /**
    * <p data-diff-id="ct-diff-id-677057d7-63cd-4410-adb3-9cfdd2d80c81">使用权益列表</p><p data-diff-id="ct-diff-id-a6b5cc2d-9d0b-4cc9-a42c-7fb201903bef">众包发配送接口查询返回字段rights_detail_List</p>
    */
    @SerializedName("rightsDetailList")
    private List<RightsDetail> rightsDetailList;
    /**
    * <p data-diff-id="ct-diff-id-2b767b25-f746-40c0-8a91-69df7626f5ce"><span style="color: rgba(0, 0, 0, 0.65)">三方订单号，必填</span></p>
    */
    @SerializedName("thirdOrderId")
    private String thirdOrderId;
    /**
    * <p data-diff-id="ct-diff-id-858ac74b-f6c9-4b81-bcfb-e729a96c13e3">订单来源 0 无来源 1 美团 2 饿了么 3 百度 4 其他 5京东到家 6 青云自建订单 7歪马微商城，升级到支持非美团订单接口协议后必填</p>
    */
    @SerializedName("orderSource")
    private Integer orderSource;
    /**
    * <p data-diff-id="ct-diff-id-7b447984-b284-4b61-99f8-0928a2b74407"><span style="color: rgba(0, 0, 0, 0.65)">发件人地址，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("senderAddress")
    private String senderAddress;
    /**
    * <p data-diff-id="ct-diff-id-29625e9e-cb4f-4f92-801f-e6fac2968f90"><span style="color: rgba(0, 0, 0, 0.65)">发件人电话，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("senderPhone")
    private String senderPhone;
    /**
    * <p data-diff-id="ct-diff-id-953fca66-e27a-4e9d-87d1-bed626d4ab4f"><span style="color: rgba(0, 0, 0, 0.65)">发件人经度（火星坐标系），非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("senderLng")
    private Integer senderLng;
    /**
    * <p data-diff-id="ct-diff-id-4047ee8e-7a98-40c7-901b-e211dc656dd0"><span style="color: rgba(0, 0, 0, 0.65)">发件人纬度（火星坐标系），非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("senderLat")
    private Integer senderLat;
    /**
    * <p data-diff-id="ct-diff-id-2b90c547-d77b-40b3-a918-94dcec23b3ea"><span style="color: rgba(0, 0, 0, 0.65)">发件人姓名，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("senderName")
    private String senderName;
    /**
    * <p data-diff-id="ct-diff-id-41f9989e-85dd-42b7-b5fa-6de9be616516"><span style="color: rgba(0, 0, 0, 0.65)">收件人姓名，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("receiverName")
    private String receiverName;
    /**
    * <p data-diff-id="ct-diff-id-db17f386-0a39-4f94-8c2f-8fd536bc6b77"><span style="color: rgba(0, 0, 0, 0.65)">收件人地址，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("receiverAddress")
    private String receiverAddress;
    /**
    * <p data-diff-id="ct-diff-id-e5b04390-6673-43ca-997d-3cd4ebc541d7"><span style="color: rgba(0, 0, 0, 0.65)">收件人电话，非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("receiverPhone")
    private String receiverPhone;
    /**
    * <p data-diff-id="ct-diff-id-a235ba95-8644-4dba-8f42-502414f7ce3d"><span style="color: rgba(0, 0, 0, 0.65)">收件人经度（火星坐标系），非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("receiverLng")
    private Integer receiverLng;
    /**
    * <p data-diff-id="ct-diff-id-0ea23b3a-c3c6-4798-b3e2-d933274937d7"><span style="color: rgba(0, 0, 0, 0.65)">收件人纬度（火星坐标系），非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</span></p>
    */
    @SerializedName("receiverLat")
    private Integer receiverLat;
    /**
    * <p data-diff-id="ct-diff-id-7ac12b23-c7bb-4677-bbcf-391eece0cf75">货物重量（货物信息）。非美团订单必填，美团订单优先使用填写的值，不填写以美团存储的信息为准</p><p data-diff-id="ct-diff-id-c3cefd59-a7c5-43f8-9184-f5e00d6e2056">（1）单位kg，限制0-20（包含20），超过20则报错；</p><p data-diff-id="ct-diff-id-8e6a5bfd-d66d-41b3-8541-d1978ede0830">（2）允许小数点后两位，如果小数点后位数多于两位，则四舍五入保留两位小数</p>
    */
    @SerializedName("goodsWeight")
    private Double goodsWeight;
    /**
    * <p data-diff-id="ct-diff-id-ba87646e-06f1-422d-9520-f26255fd9749">价格区间上限（货物信息）。单位元，限制0-3000（包含3000，不包含0），超过3000则报错，只允许整数</p><p data-diff-id="ct-diff-id-5347ae2f-8a33-478e-be71-02dcd455ef26">非美团订单必填，美团订单优先使用填写的值，不填写默认取值100</p>
    */
    @SerializedName("goodsValueCeiling")
    private Integer goodsValueCeiling;
    /**
    * <p data-diff-id="ct-diff-id-742346a4-0bf5-41cf-9ee1-aac5ccc4bf4e">价格区间下限（货物信息）。单位元，限制0-3000（包含3000），超过3000则报错，只允许整数</p><p data-diff-id="ct-diff-id-82b5a715-3254-40de-add6-6fee8fe0e005">非美团订单必填，美团订单优先使用填写的值，不填写默认取值0</p>
    */
    @SerializedName("goodsValueFloor")
    private Integer goodsValueFloor;
    /**
    * <p data-diff-id="ct-diff-id-f1a3decb-dbf9-4f3b-bb77-0d00919c5482"><span style="color: rgba(0, 0, 0, 0.65)">token。预发单时返回的token（30分钟内有效），询价时返回务必带回</span></p>
    */
    @SerializedName("token")
    private Long token;
    /**
    * <p data-diff-id="ct-diff-id-2d2fbb96-8ab3-44be-b680-0aeec55c069b"><span style="color: rgba(0, 0, 0, 0.65)">预计取货时间。预计取货时间需在发单时间+60分钟～次日23点50分之间的范围</span></p>
    */
    @SerializedName("expectedPickupTime")
    private Integer expectedPickupTime;
    /**
    * <p data-diff-id="ct-diff-id-60f9e475-6b4d-4bef-a1a2-387810d5910e"><span style="color: rgba(0, 0, 0, 0.65)">是否需要收货码。1表示生成，2表示不生成</span></p>
    */
    @SerializedName("isNeedGoodCode")
    private Integer isNeedGoodCode;
    /**
    * <p data-diff-id="ct-diff-id-ecc0f146-83f3-4a65-b028-a0258293ccd3">备注</p>
    */
    @SerializedName("remark")
    private String remark;
    /**
    * <p data-diff-id="ct-diff-id-c9d0540f-9bd9-491c-a8b0-0fde16d91dfe"><span style="color: rgba(0, 0, 0, 0.65)">订单流水号。必须是数字&nbsp;，最长11位</span></p>
    */
    @SerializedName("reqNo")
    private String reqNo;
    /**
    * <p data-diff-id="ct-diff-id-7018d68e-53a5-411a-90ca-399f081eccb2">聚合平台流水号</p>
    */
    @SerializedName("aggrePlatformSeq")
    private String aggrePlatformSeq;
    /**
    * <p data-diff-id="ct-diff-id-0714d96d-96ca-4d27-86cd-162f68e13e53">门店授权token</p>
    */
    @SerializedName("psAuthorizeToken")
    private String psAuthorizeToken;

    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public Double getShippingFee() {
        return shippingFee;
    }
    public void setShippingFee(Double shippingFee) {
        this.shippingFee = shippingFee;
    }
    public Double getTipAmount() {
        return tipAmount;
    }
    public void setTipAmount(Double tipAmount) {
        this.tipAmount = tipAmount;
    }
    public String getCouponViewId() {
        return couponViewId;
    }
    public void setCouponViewId(String couponViewId) {
        this.couponViewId = couponViewId;
    }
    public String getReduceDetail() {
        return reduceDetail;
    }
    public void setReduceDetail(String reduceDetail) {
        this.reduceDetail = reduceDetail;
    }
    public String getLogisticsCode() {
        return logisticsCode;
    }
    public void setLogisticsCode(String logisticsCode) {
        this.logisticsCode = logisticsCode;
    }
    public List<RightsDetail> getRightsDetailList() {
        return rightsDetailList;
    }
    public void setRightsDetailList(List<RightsDetail> rightsDetailList) {
        this.rightsDetailList = rightsDetailList;
    }
    public String getThirdOrderId() {
        return thirdOrderId;
    }
    public void setThirdOrderId(String thirdOrderId) {
        this.thirdOrderId = thirdOrderId;
    }
    public Integer getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }
    public String getSenderAddress() {
        return senderAddress;
    }
    public void setSenderAddress(String senderAddress) {
        this.senderAddress = senderAddress;
    }
    public String getSenderPhone() {
        return senderPhone;
    }
    public void setSenderPhone(String senderPhone) {
        this.senderPhone = senderPhone;
    }
    public Integer getSenderLng() {
        return senderLng;
    }
    public void setSenderLng(Integer senderLng) {
        this.senderLng = senderLng;
    }
    public Integer getSenderLat() {
        return senderLat;
    }
    public void setSenderLat(Integer senderLat) {
        this.senderLat = senderLat;
    }
    public String getSenderName() {
        return senderName;
    }
    public void setSenderName(String senderName) {
        this.senderName = senderName;
    }
    public String getReceiverName() {
        return receiverName;
    }
    public void setReceiverName(String receiverName) {
        this.receiverName = receiverName;
    }
    public String getReceiverAddress() {
        return receiverAddress;
    }
    public void setReceiverAddress(String receiverAddress) {
        this.receiverAddress = receiverAddress;
    }
    public String getReceiverPhone() {
        return receiverPhone;
    }
    public void setReceiverPhone(String receiverPhone) {
        this.receiverPhone = receiverPhone;
    }
    public Integer getReceiverLng() {
        return receiverLng;
    }
    public void setReceiverLng(Integer receiverLng) {
        this.receiverLng = receiverLng;
    }
    public Integer getReceiverLat() {
        return receiverLat;
    }
    public void setReceiverLat(Integer receiverLat) {
        this.receiverLat = receiverLat;
    }
    public Double getGoodsWeight() {
        return goodsWeight;
    }
    public void setGoodsWeight(Double goodsWeight) {
        this.goodsWeight = goodsWeight;
    }
    public Integer getGoodsValueCeiling() {
        return goodsValueCeiling;
    }
    public void setGoodsValueCeiling(Integer goodsValueCeiling) {
        this.goodsValueCeiling = goodsValueCeiling;
    }
    public Integer getGoodsValueFloor() {
        return goodsValueFloor;
    }
    public void setGoodsValueFloor(Integer goodsValueFloor) {
        this.goodsValueFloor = goodsValueFloor;
    }
    public Long getToken() {
        return token;
    }
    public void setToken(Long token) {
        this.token = token;
    }
    public Integer getExpectedPickupTime() {
        return expectedPickupTime;
    }
    public void setExpectedPickupTime(Integer expectedPickupTime) {
        this.expectedPickupTime = expectedPickupTime;
    }
    public Integer getIsNeedGoodCode() {
        return isNeedGoodCode;
    }
    public void setIsNeedGoodCode(Integer isNeedGoodCode) {
        this.isNeedGoodCode = isNeedGoodCode;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getReqNo() {
        return reqNo;
    }
    public void setReqNo(String reqNo) {
        this.reqNo = reqNo;
    }
    public String getAggrePlatformSeq() {
        return aggrePlatformSeq;
    }
    public void setAggrePlatformSeq(String aggrePlatformSeq) {
        this.aggrePlatformSeq = aggrePlatformSeq;
    }
    public String getPsAuthorizeToken() {
        return psAuthorizeToken;
    }
    public void setPsAuthorizeToken(String psAuthorizeToken) {
        this.psAuthorizeToken = psAuthorizeToken;
    }


    @Override
    public MeituanResponse<String> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<String>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "ZbDispatchRequest{" + "orderId=" + orderId + "," + "shippingFee=" + shippingFee + "," + "tipAmount=" + tipAmount + "," + "couponViewId=" + couponViewId + "," + "reduceDetail=" + reduceDetail + "," + "logisticsCode=" + logisticsCode + "," + "rightsDetailList=" + rightsDetailList + "," + "thirdOrderId=" + thirdOrderId + "," + "orderSource=" + orderSource + "," + "senderAddress=" + senderAddress + "," + "senderPhone=" + senderPhone + "," + "senderLng=" + senderLng + "," + "senderLat=" + senderLat + "," + "senderName=" + senderName + "," + "receiverName=" + receiverName + "," + "receiverAddress=" + receiverAddress + "," + "receiverPhone=" + receiverPhone + "," + "receiverLng=" + receiverLng + "," + "receiverLat=" + receiverLat + "," + "goodsWeight=" + goodsWeight + "," + "goodsValueCeiling=" + goodsValueCeiling + "," + "goodsValueFloor=" + goodsValueFloor + "," + "token=" + token + "," + "expectedPickupTime=" + expectedPickupTime + "," + "isNeedGoodCode=" + isNeedGoodCode + "," + "remark=" + remark + "," + "reqNo=" + reqNo + "," + "aggrePlatformSeq=" + aggrePlatformSeq + "," + "psAuthorizeToken=" + psAuthorizeToken + "}";
    }
}
